package model.tree;

import java.util.List; 

import javax.vecmath.Point3d;

import model.AABB;
import model.primitive.IntersectionData;
import model.ray.Ray;


public interface OctTree{ 

	//Get an object closest to point.
	AABB get( Point3d point );
	          
	//Get an object closest to point, within a maximum distance.
	AABB get( Point3d point, double withinDistance);
	
	//Add an object into the tree at a location.
	void put( AABB obj );
 
	//Remove a object out of the tree at a location.
	boolean remove( AABB obj);
	
	List<IntersectionData> getIntersections( Ray ray );

	/*
	//Get all the objects within a bounding box.
	Vector get(float north, float west, float south, float east)
	
	//Get all the objects within a bounding box, and return the objects within a given Vector.
	Vector get(float north, float west, float south, float east, Vector vector)
	
	 */
}